/*
 * Copyright (C) 2010-2011 Comcast Cable.  All Rights Reserved.
 */
package com.hercules.android.receiver.model.events;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * This class is a container for XRE device capability parameters that are specified when connect message is sent. This
 * class is used in XREConnectEvent. It is a simple JavaBean (POJO) that provides getters and setters for all private
 * attributes and performs no argument validation in the setters.
 * </p>
 * <p>
 * <strong>Thread safety:</strong> This class is mutable and not thread safe.
 * </p>
 *
 * @author saarixx, jmn
 * @author 7realm
 * @version 1.0
 */
public class XREDeviceCapabilities {
    /**
     * <p>
     * The type of the XRE receiver software.
     * </p>
     * <p>
     * Can be any value.
     * </p>
     * <p>
     * Has getter and setter.
     * </p>
     * <p>
     * AndroidAssembly1 new field
     */
    private String receiverType;

    /**
     * <p>
     * The version of the XRE receiver software.
     * </p>
     * <p>
     * Should be in the form X.Y.Z.
     * </p>
     * <p>
     * Can be any value.
     * </p>
     * <p>
     * Has getter and setter.
     * </p>
     */
    private String receiverVersion;

    /**
     * <p>
     * The platform (operating system) of the receiver.
     * </p>
     * <p>
     * Can be any value.
     * </p>
     * <p>
     * Has getter and setter.
     * </p>
     */
    private String platform;

    /**
     * <p>
     * The version of the receiver's platform.
     * </p>
     * <p>
     * Can be any value.
     * </p>
     * <p>
     * Has getter and setter.
     * </p>
     */
    private String platformVersion;

    /**
     * <p>
     * The list of mime types supported by the receiver.
     * </p>
     * <p>
     * Can be any value, can contain any values.
     * </p>
     * <p>
     * Has getter and setter.
     * </p>
     */
    private List<String> mimeTypes = new ArrayList<String>();

    /**
     * <p>
     * The array containing the native resolution of the receiver.
     * <p>
     * Is expected to contain exactly 2 elements: height and width.
     * </p>
     * <p>
     * Can be any value, can contain any values. Has getter and setter.
     * </p>
     */
    private int[] nativeDimensions;

    /**
     * <p>
     * Creates new instance of {@link XREDeviceCapabilities} class.
     * </p>
     */
    public XREDeviceCapabilities() {
        // empty constructor
    }

    /**
     * Gets the type of the XRE receiver software.
     *
     * @return the type of the XRE receiver software
     */
    public String getReceiverType() {
        return receiverType;
    }

    /**
     * Sets the type of the XRE receiver software.
     *
     * @param receiverType the type of the XRE receiver software
     */
    public void setReceiverType(String receiverType) {
        this.receiverType = receiverType;
    }

    /**
     * <p>
     * Retrieves the version of the XRE receiver software.
     * </p>
     *
     * @return the version of the XRE receiver software
     */
    public String getReceiverVersion() {
        return receiverVersion;
    }

    /**
     * <p>
     * Sets the version of the XRE receiver software.
     * </p>
     *
     * @param receiverVersion the version of the XRE receiver software
     */
    public void setReceiverVersion(String receiverVersion) {
        this.receiverVersion = receiverVersion;
    }

    /**
     * <p>
     * Retrieves the platform (operating system) of the receiver.
     * </p>
     *
     * @return the platform (operating system) of the receiver
     */
    public String getPlatform() {
        return platform;
    }

    /**
     * <p>
     * Sets the platform (operating system) of the receiver.
     * </p>
     *
     * @param platform the platform (operating system) of the receiver
     */
    public void setPlatform(String platform) {
        this.platform = platform;
    }

    /**
     * <p>
     * Retrieves the version of the receiver's platform.
     * </p>
     *
     * @return the version of the receiver's platform
     */
    public String getPlatformVersion() {
        return platformVersion;
    }

    /**
     * <p>
     * Sets the version of the receiver's platform.
     * </p>
     *
     * @param platformVersion the version of the receiver's platform
     */
    public void setPlatformVersion(String platformVersion) {
        this.platformVersion = platformVersion;
    }

    /**
     * <p>
     * Retrieves the list of mime types supported by the receiver.
     *
     * @return the list of mime types supported by the receiver
     */
    public List<String> getMimeTypes() {
        return mimeTypes;
    }

    /**
     * <p>
     * Sets the list of mime types supported by the receiver.
     * </p>
     *
     * @param mimeTypes the list of mime types supported by the receiver
     */
    public void setMimeTypes(List<String> mimeTypes) {
        this.mimeTypes = mimeTypes;
    }

    /**
     * <p>
     * Retrieves the array containing the native resolution of the receiver.
     * </p>
     *
     * @return the array containing the native resolution of the receiver
     */
    public int[] getNativeDimensions() {
        return nativeDimensions;
    }

    /**
     * <p>
     * Sets the array containing the native resolution of the receiver.
     * </p>
     *
     * @param nativeDimensions the array containing the native resolution of the receiver
     */
    public void setNativeDimensions(int[] nativeDimensions) {
        this.nativeDimensions = nativeDimensions;
    }
}
